QTableWidget(常用功能记录)

您所在的位置:网站首页 pyqt tablewidget列拖动 QTableWidget(常用功能记录)

QTableWidget(常用功能记录)

2023-06-27 06:27| 来源: 网络整理| 查看: 265

本篇会持续更新,我会把平时工作中关于该控件的一些使用方法,记录下来~

1.初始化一个表格的大致雏形 //创建表格头部 QStringList qlistTemp; qlistTemp setEditTriggers(QAbstractItemView::AnyKeyPressed); //观察枚举量的值,可知内部应该是使用二进制的方式来设置模式的,故可同时设定多种编辑模式 //设置后编辑模式更改为输入任意内容和双击均可开始编辑 auto editMode = QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked; ui.tbl_student->setEditTriggers(editMode); 2.2 行末不留空

有时候表格比较大,但是只有几列,看起来不美观,这个时候可以把表格的最后一列拉长至末尾

//设置表格是否充满,即行末是否留空 ui.tbl_student->horizontalHeader()->setStretchLastSection(true); 2.3设置列宽模式 /* 该枚举量为qt内部定义,我们无需定义 enum ResizeMode { Interactive, //可以拖拉表格头部,改变列宽 Stretch, //每列均分 Fixed, //固定列宽 ResizeToContents, //根据内容自适应 Custom = Fixed };*/ //设置列宽模式为每列均分 ui.tbl_student->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);  2.4设置选中模式 /* 该枚举量为qt内部定义,我们无需定义 enum SelectionBehavior { SelectItems, //每次选中一个或多个单元格 SelectRows, //每次选中一行或多行 SelectColumns //每次选中一列或多列 };*/ //设置选中模式 ui.tbl_student->setSelectionBehavior(QTableWidget::SelectRows);

 执行代码后效果如下:

3.往表格中输入或删减内容

QTableWidget就像是一个框架,完善它,就必须使用QTableWidgetItem来填充它,就好像书柜,填满它得用书籍

QTableWidgetItem也是一种Qt部件,本文章不细说该部件

3.1添加空行

在界面上添加一个按钮,点击按钮后往表格末端添加空行,按钮槽函数如下

void tableWidgetDemo::SlotOnClickedAddLine(void) { //获取当前表格的行数rowCount,然后在第rowCount行处插入一个新行 int rowCount = ui.tbl_student->rowCount(); ui.tbl_student->insertRow(rowCount); QTableWidgetItem* pItem = nullptr; //给新增行的每一个单元格放上QTableWidgetItem; int columnCount = ui.tbl_student->columnCount(); for (int i = 0; i < columnCount; ++i) { //每个单元格必须单独new一个QTableWidgetItem,不能共用同一块内存 pItem = new QTableWidgetItem(); ui.tbl_student->setItem(rowCount, i, pItem); } } 3.2删除选中行

在界面上添加一个按钮,点击按钮后删除表格选中行,按钮槽函数如下

void tableWidgetDemo::SlotOnClickedDeleteLine(void) { //获取表格选中行 int curRow = ui.tbl_student->currentRow(); //如果表格未选中(返回值为-1)则不进行操作 if (curRow == -1) { return; } //把该行的所有QTableWidgetItem的内存释放掉 int columnCount = ui.tbl_student->columnCount(); QTableWidgetItem* pItem = nullptr; for (int i = 0; i < columnCount; ++i) { pItem = ui.tbl_student->item(curRow, i); delete pItem; } //最后在表格中把该行移除 ui.tbl_student->removeRow(curRow); } 3.3删除整个表格

把表格中的每个Item的内存都释放掉

tableWidgetDemo::~tableWidgetDemo() { //释放表格所占用的所有内存,防止内存溢出 int rowColunt = ui.tbl_student->rowCount(); int columnCount = ui.tbl_student->columnCount(); //从下到上,从左到右释放内存,每释放一行就从表格中移除一行 for (int row = rowColunt; row >= 0; --row) { for (int column = 0; column < columnCount; ++columnCount) { delete ui.tbl_student->item(row, column); } ui.tbl_student->removeRow(row); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3